a. Field of the Invention
The present invention pertains generally to redundant arrays of independent disks (RAID) and specifically to handling unreadable blocks during a write operation on RAID devices.
b. Description of the Background
Redundant arrays of independent disks (RAID) is standardized technology for the storage of data with emphasis on performance, fault tolerance, and the ability to recover data due to a failure of a disk drive. Many RAID products are commercially available.
The RAID Advisory Board of St. Peter, Minnesota has defined and standardized several different RAID levels. RAID level 1 (‘RAID 1’), for example, is a mirrored disk wherein a complete copy of the data on one disk is simultaneously maintained and stored on a second disk. In the event of a failure of one disk, a complete copy of the data on the second disk is available. The data on the second disk may be used to recreate the data on the first disk when the first disk is replaced or repaired. RAID 5 uses several disks to store data. The data is stored in stripes, meaning that for a large block of data, some will be written to the first drive, some to the second drive, and so forth. Several disks can write in parallel, thus increasing the data throughput by a multiple of the number of available disks. RAID 5 uses parity data, interleaved with other data, as a method to store redundancy information. Parity is computed by performing the exclusive OR (XOR) function to the data on each block of the stripe. Other RAID levels exist with different variations of performance and cost tradeoffs.
A RAID 5 system can tolerate one failure and is still be able to reconstruct data. When a media error on a disk drive or other abnormality causes a failure on one disk drive, the RAID controller may reconstruct the data from the remaining drives. In the event of two failures, however, the RAID controller may not be able to recreate the data and the I/O operation will fail because the maximum number of simultaneous failures has been exceeded.
It would therefore be advantageous to provide a method for continuing a write process when more than the maximum number of simultaneous failures has been exceeded.